/**
 * 接口路径配置测试
 * 
 * 用途：验证各个API客户端是否正确使用配置文件中的接口路径
 * 方法：通过反射或公共方法检查API客户端的接口配置
 * 原理：确保所有API客户端都从配置文件读取接口路径，而不是使用硬编码值
 */

import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.example.brain_wave.api.AnalysisApiClient
import com.example.brain_wave.config.AppConfig
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.Assert.*

@RunWith(AndroidJUnit4::class)
class EndpointConfigurationTest {

    private lateinit var context: Context
    private lateinit var appConfig: AppConfig

    @Before
    fun setUp() {
        context = ApplicationProvider.getApplicationContext<Context>()
        appConfig = AppConfig.getInstance(context)
    }

    @Test
    fun testAnalysisApiClientUsesConfiguredEndpoint() {
        // 测试AnalysisApiClient是否使用配置文件中的api.endpoint
        val analysisApiClient = AnalysisApiClient(context)
        assertNotNull("AnalysisApiClient实例不应为null", analysisApiClient)
        
        // 验证配置文件中的api.endpoint值
        val configuredEndpoint = appConfig.apiEndpoint
        assertEquals("配置文件中的api.endpoint应为/api/tablet/upload", "/api/tablet/upload", configuredEndpoint)
        
        println("✓ AnalysisApiClient已配置使用配置文件中的接口路径: $configuredEndpoint")
    }

    @Test
    fun testConfigurationValues() {
        // 验证配置文件中的各项配置值
        assertEquals("API基础URL配置", "http://192.168.2.12:8000", appConfig.apiBaseUrl)
        assertEquals("API接口路径配置", "/api/tablet/upload", appConfig.apiEndpoint)
        assertEquals("连接超时配置", 10, appConfig.connectTimeout)
        assertEquals("写入超时配置", 10, appConfig.writeTimeout)
        assertEquals("读取超时配置", 30, appConfig.readTimeout)
        
        println("✓ 所有配置值验证通过")
    }

    @Test
    fun testEndpointNotHardcoded() {
        // 验证接口路径不是硬编码的"/api/tablet/data"
        val configuredEndpoint = appConfig.apiEndpoint
        assertNotEquals("接口路径不应该是硬编码的/api/tablet/data", "/api/tablet/data", configuredEndpoint)
        
        println("✓ 接口路径已从硬编码修复为配置文件读取")
    }
}